perm filename TAK.S1[TIM,LSP] blob sn#620912 filedate 1981-10-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	title tak
C00004 ENDMK
C⊗;
title tak

DEFINE OUTSTR "(<{B}>)" STRING
	JSR #⊂STRING⊃,STROUT
TERMIN

pc←%3
a←%10
b←%11
c←%12

fxp←%34
sp←%36

go:	wspid #sp
	mov.d.d sp,[pdl ↔ pdlend]
	mov.d.d fxp,[fxpdl ↔ fxpdlend]
	timer time1
	movms.3 a,[18. ↔ 12. ↔ 6]
	jsr tak1
	timer time2
	outstr [asciz /Answer = /]
	mov a,c
	jsr decout
	outstr [asciz / in /]
	sub rta,time2+4,time1+4
	quo rta,#10.		;convert to microseconds
	mov a,rta
	jsr decout
	outstr [asciz / microseconds.
/]
	halt .

tak1:	skp.gtr a,b
	retsr pc,(sp)
tak2:	add fxp,#5*4
	movms.3 -3(fxp),a
	djmp.leq a
	jsr tak2
	mov -5(fxp),c
	mov.d.d a,-2(fxp)
	mov c,-3(fxp)
	djmp.leq a
	jsr tak2
	mov -4(fxp),c
	mov a,-1(fxp)
	mov.d.d b,-3(fxp)
	djmp.leq a
	jsr tak2
	mov.d.d a,-5(fxp)
	sub fxp,#5*4
	jmp.gtr a,tak2
	retsr pc,(sp)

decout:	div a,#10.
	jmpz.eql a,decou1
	jsr b,decout
decou1:	add b,?"0"
	outchr b
	retsr b,(sp)

STROUT:	ALLOC.2 A,#2*4
	MOV A,-4(SP)		;GET BYTE ADDRESS OF STRING
STROU1:	MOV.S.Q B,(A)		;GET NEXT BYTE
	JMPZ.EQL B,STROUD
	OUTCHR B
	IJMPA A,STROU1

STROUD:	MOVMS.2 A,-2(SP)
	RETSR PC,-2(SP)

time1:	block 2
time2:	block 2
pdl:	block 5000
pdlend:
fxpdl:	block 5000
fxpdlend:

	end go